<?php
/* 
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

require_once 'Zend/Form.php';
require_once 'Zend/Form/Element/Select.php';
require_once 'Zend/Form/Element/Text.php';
require_once 'Zend/Form/Element/Button.php';
require_once 'Zend/Validate/Alpha.php';
require_once 'Zend/Validate/Digits.php';
require_once 'Zend/Validate/Regex.php';
require_once 'Zend/Validate/EmailAddress.php';

require_once APPLICATION_PATH . '/models/Single/LocalidadEntity.php';
require_once APPLICATION_PATH . '/models/Single/TipoDocumentoEntity.php';
require_once APPLICATION_PATH . '/models/Single/ClienteEntity.php';

/**
 * Description of NuevoCliente
 *
 * @author kristian
 */
class Form_NuevoCliente extends Zend_Form{

    public function  __construct($cliente = null) {
        parent::__construct();

        // obtiene la lista de localidades
        $localidadesModel = new Spalm_Model_Single_LocalidadEntity();
        $localidades = $localidadesModel->fetchAll();

        // obtiene la lista de tipos de documentos
        $documentosModel = new Spalm_Model_Single_TipoDocumentoEntity();
        $tiposDocumentos = $documentosModel->fetchAll();

        // convierte el formato de el arreglo para que pueda ser utilizado por el select
        foreach ($localidades as $localidadActual) {
            $listaLocalidades[$localidadActual->getPK()] = $localidadActual->getNombre();
        }

        foreach ($tiposDocumentos as $tipoDoc) {
            $listaDocumentos[$tipoDoc->getPK()] = $tipoDoc->getSigla();
        }

        if ($cliente !== null){ // si se quiere editar
            $razonSocial = $cliente->getRazonSocial();
            $localidad = $cliente->getLocalidad()->getPK();
            $tipoDocumento = $cliente->getTipoDocumento()->getPK();
            $numDocumento = $cliente->getNumeroDocumento();
            $domicilio = $cliente->getDomicilio();
            $nroTelefono = $cliente->getNroTelefono();
            $email = $cliente->getEmail();


            $submitName = 'Guardar';
        }
        else { // si se quiere crear un nuevo cliente
            list($docKey,$docName) = each($listaDocumentos);
            list($locKey,$locName) = each($listaLocalidades);

            $razonSocial = '';
            $localidad = '';
            $tipoDocumento = '';
            $numDocumento = '';
            $domicilio = '';
            $nroTelefono = '';
            $email = '';


            $submitName = 'Agregar';
        }


        // crea la pantalla

        $this->setName('Localidades');
        //$this->setAction('/localidad/nueva');
        $this->setMethod('post');

        $trim = new Zend_Filter_StringTrim();
        $notHtml = new Zend_Filter_StripTags();
        $notEmpty = new Zend_Validate_NotEmpty();

        $valEmail = new Zend_Validate_EmailAddress();
        $valAlnum = new Zend_Validate_Alnum();
        $valDigits = new Zend_Validate_Digits();

        $valLongitudRZ = new Zend_Validate_StringLength();
        $valLongitudRZ->setMax(100);
        $valLongitudRZ->setMessage('Nombre demasiado largo');

        $valLongitudND = new Zend_Validate_StringLength();
        $valLongitudND->setMax(12);
        $valLongitudND->setMessage('Número de documento demasiado largo');

        $valLongitudDM = new Zend_Validate_StringLength();
        $valLongitudDM->setMax(100);
        $valLongitudDM->setMessage('Domicilio demasiado largo');

        $valLongitudNT = new Zend_Validate_StringLength();
        $valLongitudNT->setMax(15);
        $valLongitudNT->setMessage('Número de teléfono demasiado largo');

        $valLongitudML = new Zend_Validate_StringLength();
        $valLongitudML->setMax(100);
        $valLongitudML->setMessage('Correo eléctronico demasiado largo');

        $valAlnum->setAllowWhiteSpace(true);
        $valAlnum->setMessage('Solo valores alfanumericos');

        $valDigits->setMessage('Solo dígitos');
        $valEmail->setMessage('Por favor corrija el email. Esta mal formado');

        $txtRazonSocial = new Zend_Form_Element_Text('razonSocial');
        $txtRazonSocial->addFilter($trim);
        $txtRazonSocial->addFilter($notHtml);
        $txtRazonSocial->setAllowEmpty(false);
        $txtRazonSocial->setLabel('Razón Social: ');
        $txtRazonSocial->setValue($razonSocial);
        $txtRazonSocial->setRequired(true);
        $txtRazonSocial->addValidator($valAlnum);
        $txtRazonSocial->addValidator($valLongitudRZ);
        //$txtRazonSocial->addValidator($notEmpty);
        //$txtRazonSocial->addValidator('Regex', false, array('([A-Z][a-z]*)+'));

        $slLocalidad = new Zend_Form_Element_Select('localidades');
        $slLocalidad->setMultiOptions($listaLocalidades);
        $slLocalidad->setAllowEmpty(false);
        $slLocalidad->setLabel('Localidad: ');
        $slLocalidad->setValue($localidad);
        $slLocalidad->setRequired(true);
        //$slLocalidad->addValidator($notEmpty);

        $slTipoDocumento = new Zend_Form_Element_Select('tiposDocumentos');
        $slTipoDocumento->setMultiOptions($listaDocumentos);
        $slTipoDocumento->setAllowEmpty(false);
        $slTipoDocumento->setLabel('Tipo de Documento: ');
        $slTipoDocumento->setValue($tipoDocumento);
        $slTipoDocumento->setRequired(true);
        //$slTipoDocumento->addValidator($notEmpty);

        $txtNroDocumento = new Zend_Form_Element_Text('nroDocumento');
        $txtNroDocumento->addFilter($trim);
        $txtNroDocumento->addFilter($notHtml);
        $txtNroDocumento->setAllowEmpty(false);
        $txtNroDocumento->setLabel('Número de Documento: ');
        $txtNroDocumento->setValue($numDocumento);
        $txtNroDocumento->setRequired();
        $txtNroDocumento->addValidator($valLongitudND);
        $txtNroDocumento->addValidator($valDigits);

        $txtDomicilio = new Zend_Form_Element_Text('domicilio');
        $txtDomicilio->addFilter($trim);
        $txtDomicilio->addFilter($notHtml);
        $txtDomicilio->setAllowEmpty(false);
        $txtDomicilio->setLabel('Domicilio: ');
        $txtDomicilio->setValue($domicilio);
        $txtDomicilio->setRequired();
        $txtDomicilio->addValidator($valLongitudDM);
        $txtDomicilio->addValidator($valAlnum);

        $txtNroTelefono = new Zend_Form_Element_Text('nroTelefono');
        $txtNroTelefono->addFilter($trim);
        $txtNroTelefono->addFilter($notHtml);
        $txtNroTelefono->setLabel('Número de teléfono: ');
        $txtNroTelefono->setValue($nroTelefono);
        $txtNroTelefono->addValidator($valLongitudNT);
        $txtNroTelefono->addValidator($valDigits);

        $txtEmail = new Zend_Form_Element_Text('email');
        $txtEmail->addFilter($trim);
        $txtEmail->addFilter($notHtml);
        $txtEmail->setLabel('Dirección de correo electrónico: ');
        $txtEmail->setValue($email);
        $txtEmail->addValidator($valLongitudML);
        $txtEmail->addValidator($valEmail);

        $submit = new Zend_Form_Element_Submit('submit');
        $submit->setLabel($submitName);
        $submit->setAttrib('onclick', "return confirm('Por favor, confirme')");

        $reset = new Zend_Form_Element_Reset('reset');
        $reset->setLabel('Reiniciar');

        $this->addElement($txtRazonSocial);
        $this->addElement($slLocalidad);
        $this->addElement($slTipoDocumento);
        $this->addElement($txtNroDocumento);
        $this->addElement($txtDomicilio);
        $this->addElement($txtNroTelefono);
        $this->addElement($txtEmail);
        $this->addElement($submit);
        $this->addElement($reset);

    }
}
?>
